package com.example.extra.enums;

/**
 * 国家枚举类
 * 包含国家编码和国家名称的映射
 * 
 * @author system
 * @date 2025-09-18
 */
public enum CountryEnum {
    
    /**
     * 俄罗斯
     */
    RUSSIA("0308", "俄罗斯"),
    
    /**
     * 乌克兰
     */
    UKRAINE("0304", "乌克兰"),

    PALESTINE("0140", "巴勒斯坦"),

    ISRAEL("0139", "以色列"),

    Iran("0108", "伊朗"),

    TAIWAN("010101", "台湾"),

    //台湾舆情
    TAIWAN_SENTIMENT("5555", "台湾"),

    //空天领域
    AEROSPACE_FIELD("8888", "空天"),

    //太空作战
    OUTER_SPACE("7777", "太空"),

    //美国新政
    AMERICA_NEW_DEAL("0401", "美国"),

    INDIA("0120", "印度"),

    PAKISTAN("0121", "巴基斯坦"),

    MILITARY_EXERCISE("9999", "军演");

    /**
     * 国家编码
     */
    private final String code;
    
    /**
     * 中文名称
     */
    private final String chineseName;
    
    
    /**
     * 构造函数
     * 
     * @param code 国家编码
     * @param chineseName 中文名称
     */
    CountryEnum(String code, String chineseName) {
        this.code = code;
        this.chineseName = chineseName;
    }
    
    /**
     * 获取国家编码
     * 
     * @return 国家编码
     */
    public String getCode() {
        return code;
    }
    
    /**
     * 获取中文名称
     * 
     * @return 中文名称
     */
    public String getChineseName() {
        return chineseName;
    }
    
    
    /**
     * 根据国家编码获取枚举
     * 
     * @param code 国家编码
     * @return 对应的国家枚举，如果未找到返回null
     */
    public static CountryEnum getByCode(String code) {
        if (code == null || code.trim().isEmpty()) {
            return null;
        }
        
        for (CountryEnum country : CountryEnum.values()) {
            if (country.getCode().equals(code.trim())) {
                return country;
            }
        }
        return null;
    }
    
    /**
     * 根据中文名称获取枚举
     * 
     * @param chineseName 中文名称
     * @return 对应的国家枚举，如果未找到返回null
     */
    public static CountryEnum getByChineseName(String chineseName) {
        if (chineseName == null || chineseName.trim().isEmpty()) {
            return null;
        }
        
        for (CountryEnum country : CountryEnum.values()) {
            if (country.getChineseName().equals(chineseName.trim())) {
                return country;
            }
        }
        return null;
    }
    
    
    /**
     * 检查编码是否存在
     * 
     * @param code 国家编码
     * @return 如果存在返回true，否则返回false
     */
    public static boolean isValidCode(String code) {
        return getByCode(code) != null;
    }
    
    @Override
    public String toString() {
        return String.format("CountryEnum{code='%s', chineseName='%s'}", 
                code, chineseName);
    }
}
